package battleenum

// @schema_go --EnumToString=true
// @alias 活力类型
type H活力类型 int

const (
	H活力类型_生命 H活力类型 = iota
	H活力类型_护盾
)

// @schema_go
// @alias 性别
type X性别 int

const (
	X性别_未知 X性别 = iota
	X性别_男
	X性别_女
)

// @schema_go
// @alias 单位平面
type D单位平面 int

const (
	D单位平面_地面 D单位平面 = iota
	D单位平面_空中
)

// @schema_go
// @alias 单位性质
type D单位性质 uint

const (
	// 未定义
	D单位性质_未定义 D单位性质 = iota
)

// @schema_go
// @schema_ts
// @cache_ts
// @alias 单位状态
type D单位状态 uint

// 单位状态
const (
	// 闲置
	D单位状态_闲置 D单位状态 = 1 << iota
	D单位状态_建造中
	D单位状态_移动中

	D单位状态_禁止发布指令
	D单位状态_禁止移动
	D单位状态_禁止转向
	D单位状态_禁止攻击
	D单位状态_禁止施法
	D单位状态_禁止视野
	// 禁止AI, 禁止攻击, 禁止移动
	D单位状态_击晕
	D单位状态_混乱
	D单位状态_时间停止

	D单位状态_地面单位
	D单位状态_空中单位
	D单位状态_导弹
	D单位状态_物品
	D单位状态_幻像
	D单位状态_识别预留

	// 死亡后, 超过设置的死亡时间, 进入掩埋状态
	D单位状态_掩埋
	D单位状态_隐身
	D单位状态_死亡
	D单位状态_无敌

	D单位状态_可复活
	D单位状态_可选
	// 处于碰撞状态，单位的移动暂停
	D单位状态_碰撞
)

// @schema_go
// @alias 目标信息单位
type M目标信息单位 uint

const (
	M目标信息单位_施法单位 M目标信息单位 = 1 << iota
	M目标信息单位_来源单位
	M目标信息单位_目标单位
	M目标信息单位_自身
)

// @schema_go
// @alias 单位响应
type D单位响应 int

const (
	// 获取
	D单位响应_Acquire D单位响应 = iota

	// 获取不逃跑
	D单位响应_AcquireNoFlee

	// 逃跑
	D单位响应_Flee

	// 无响应
	D单位响应_Nothing
)

// @schema_go
type RankDisplay int

const (
	// 总是
	RankDisplay_Always RankDisplay = iota

	// 默认
	RankDisplay_Default

	// 从不
	RankDisplay_Never
)

// @schema_go
// @alias 单位碰撞
type D单位碰撞 int

const (
	D单位碰撞_地面 D单位碰撞 = iota
	D单位碰撞_飞行
)

// @schema_go
// @alias 单位效果
type D单位效果 int

const (
	// 诞生
	D单位效果_Birth D单位效果 = iota

	// 创建
	D单位效果_Create

	// 死亡
	D单位效果_Death

	// 复活
	D单位效果_Revive
)

// @schema_go
type AcquireLevel int

const (
	// 防御性
	// 目标在攻击/技能范围内触发
	AcquireLevel_Defensive AcquireLevel = iota

	// 无
	// 只有收到指令才行动
	AcquireLevel_None

	// 进攻性
	// 只要扫描到敌人就会行动
	AcquireLevel_Offensive

	// 被动
	// 受到攻击才会行动
	AcquireLevel_Passive
)

// // @schema_go --EnumToString=true
// // @alias 单位标旗
// type D单位标旗 int

// const (
// 	// AI单位听从自杀指令即使它不是一个普通作战单位's Not A Normal Attacking CUnit
// 	D单位标旗_AIAllowSuicideOverride D单位标旗 = iota

// 	// AI 施法者
// 	D单位标旗_AICaster

// 	// AI 拟态雏虫
// 	D单位标旗_AIChangeling

// 	// 防御单位的AI标签
// 	D单位标旗_AIDefense

// 	// AI禁用受到伤害逃跑
// 	D单位标旗_AIFleeDamageDisabled

// 	// AI标旗迫使即使对于未激活的AI/脚本控制单位实施战术思想/ScriptControlled
// 	D单位标旗_AIForceTactical

// 	// 标记特殊高优先级目标的AI标签
// 	D单位标旗_AIHighPrioTarget

// 	// 暂时性存在的单位的AI标签
// 	D单位标旗_AILifetime

// 	// AI忽略该单位类型并不会尝试达成't Try To Make It
// 	D单位标旗_AIMakeIgnore

// 	// AI 观测台
// 	D单位标旗_AIObservatory

// 	// AI喜好潜地
// 	D单位标旗_AIPreferBurrow

// 	// AI禁用向前压制
// 	D单位标旗_AIPressForwardDisabled

// 	// AI资源阻碍物
// 	D单位标旗_AIResourceBlocker

// 	// 范围性效果或溅射伤害单位的AI标签/Splash DamageDealt Units
// 	D单位标旗_AISplash

// 	// 分裂虫波次行为AI标签
// 	D单位标旗_AISplitter

// 	// 支援型单位的AI标识
// 	D单位标旗_AISupport

// 	// AI威胁（空中）(Air)
// 	D单位标旗_AIThreatAir

// 	// AI威胁空中单位
// 	D单位标旗_AIThreatGround

// 	// 需要集合
// 	D单位标旗_AcquireRally

// 	// 始终对进攻者造成威胁
// 	D单位标旗_AlwaysThreatens

// 	// 建造时无护甲
// 	D单位标旗_ArmorDisabledWhileConstructing

// 	// 部队选择
// 	D单位标旗_ArmySelect

// 	// 反弹
// 	D单位标旗_Bounce

// 	// 建造于 可选
// 	D单位标旗_BuiltOnOptional

// 	// 隐藏
// 	D单位标旗_Buried

// 	// 死亡时清除集结
// 	D单位标旗_ClearRallyOnDeath

// 	// 保持集结于TargetLost
// 	D单位标旗_ClearRallyOnTargetLost

// 	// 隐形
// 	D单位标旗_Cloaked

// 	// 创建时可见
// 	D单位标旗_CreateVisible

// 	// 可摧毁的
// 	D单位标旗_Destructible

// 	// 总是检查碰撞
// 	D单位标旗_ForceCollisionCheck

// 	// 英雄
// 	D单位标旗_Hero

// 	// 隐藏装载UI
// 	D单位标旗_HiddenCargoUI

// 	// 忽略攻击警报
// 	D单位标旗_IgnoreAttackAlert

// 	// 忽略地形高度
// 	D单位标旗_IgnoreTerrainZInit

// 	// 忽略阻碍
// 	D单位标旗_IgnoreBlock

// 	// 个体子组
// 	D单位标旗_IndividualSubgroups

// 	// 无敌
// 	D单位标旗_Invulnerable

// 	// 击杀得分
// 	D单位标旗_KillCredit

// 	// 发射物
// 	D单位标旗_Missile

// 	// 可移动
// 	D单位标旗_Movable

// 	// 无死亡事件
// 	D单位标旗_NoDeathEvent

// 	// 无平局
// 	D单位标旗_NoDraw

// 	// 无头像交谈
// 	D单位标旗_NoPortraitTalk

// 	// 无得分
// 	D单位标旗_NoScore

// 	// 可变卖
// 	D单位标旗_Pawnable

// 	// 惩罚暴露
// 	D单位标旗_PenaltyRevealed

// 	// 可复活
// 	D单位标旗_PlayerRevivable

// 	// 优先上一次攻击目标
// 	D单位标旗_PreferLastAttackTarget

// 	// 防止战败
// 	D单位标旗_PreventDefeat

// 	// 防止摧毁
// 	D单位标旗_PreventDestroy

// 	// 防止暴露
// 	D单位标旗_PreventReveal

// 	// 抵抗的
// 	D单位标旗_Resistant

// 	// 死亡时可选
// 	D单位标旗_SelectableWhileDead

// 	// 共享控制
// 	D单位标旗_ShareControl

// 	// 显示资源
// 	D单位标旗_ShowResources

// 	// 死亡时可选作目标
// 	D单位标旗_TargetableWhileDead

// 	// 使用城镇警报
// 	D单位标旗_TownAlert

// 	// 城镇镜头
// 	D单位标旗_TownCamera

// 	// 移动前需转身
// 	D单位标旗_TurnBeforeMove

// 	// 可转身
// 	D单位标旗_Turnable

// 	// 无法被点击
// 	D单位标旗_Unclickable

// 	// 无法隐身
// 	D单位标旗_Uncloakable

// 	// 不可指挥
// 	D单位标旗_Uncommandable

// 	// 不可有光标
// 	D单位标旗_Uncursorable

// 	// 不可侦测
// 	D单位标旗_Undetectable

// 	// 无法设定为高亮
// 	D单位标旗_Unhighlightable

// 	// 不被雷达显示
// 	D单位标旗_Unradarable

// 	// 不可选择
// 	D单位标旗_Unselectable

// 	// 不可阻止的
// 	D单位标旗_Unstoppable

// 	// 无法作为目标的
// 	D单位标旗_Untargetable

// 	// 无说明条
// 	D单位标旗_Untooltipable

// 	// 使用视线
// 	D单位标旗_UseLineOfSight

// 	// 仅限中部视野测试
// 	D单位标旗_VisionTestCenterOnly

// 	// 工人
// 	D单位标旗_Worker
// )

// @schema_go
// @alias 活力值类型
type H活力值类型 int

const (
	// 当前
	H活力值类型_当前 H活力值类型 = iota

	// 系数
	H活力值类型_系数

	// 最大值
	H活力值类型_最大值
)

// @schema_go
// 单位闲置状态
// 同一时间, 单位只能存在一个武器攻击/效果施法
// 瞬态可以避免正在使用的攻击/施法被打断
// 瞬态会忽略掉与时间有关的过程, 马上触发效果. 例如准备时间/施法时间会被跳过
// 攻击和施法只能同时存在一个, 除非设置了瞬态标记, 否则会被打断
type UnitIdleState uint

const (
	// 正在移动
	UnitIdleState_Move UnitIdleState = 1 << iota

	// 正在攻击
	UnitIdleState_Attack

	// 正在施法
	UnitIdleState_Cast
)

// @schema_go
// @schema_ts
// @cache_ts
// @alias 单位阶段
type E单位阶段 int

const (
	E单位阶段_创建 E单位阶段 = 1
	E单位阶段_闲置 E单位阶段 = 2
	// 正在执行指令
	E单位阶段_行动 E单位阶段 = 3
	E单位阶段_死亡 E单位阶段 = 8
	E单位阶段_埋葬 E单位阶段 = 9
)

// @schema_go
// @schema_ts
// @cache_ts
// @alias 单位创建时机
type E单位创建时机 int

const (
	E单位创建时机_创建 E单位创建时机 = 0
	E单位创建时机_死亡 E单位创建时机 = 8
	E单位创建时机_埋葬 E单位创建时机 = 9
)

// @schema_go
// @schema_ts
// @cache_ts
// @alias 单位销毁时机
type E单位销毁时机 int

const (
	E单位销毁时机_无  E单位销毁时机 = 0
	E单位销毁时机_死亡 E单位销毁时机 = 8
	E单位销毁时机_埋葬 E单位销毁时机 = 9
)
